package com.cty._01_Base._03_02_DuplicationInArrayNoEdit;

/**
 * @Auther: cty
 * @Date: 2020/6/27 17:42
 * @Description: 测试 Duplicate
 * @version: 1.0
 */
public class DuplicationInArrayNoEditApp {
    public static void main(String[] args) {
        // 一 输入 & 测试用例
        // 1 数组为null
        int[] array01 = null;  // output：数组为空或长度为0
        // 2 数组长度为0
        int[] array02 = {};  // output：数组为空或长度为0
        // 3 数组中包含不在1~n范围内的数字
        int[] array03 = {2,3,-1,4,3,2,6,7};  // output：数组中包含不在1~n范围内的数字
        // 4 数组中包含一个重复数字
        int[] array04 = {2,3,5,4,1,2,6,7};  // output：数组中的一个重复数字为 2
        // 5 数组中包含多个重复数字
        int[] array05 = {2,3,5,4,3,2,6,7};  // output：数组中的一个重复数字为 3

        // 二 执行
        // 1 空间优先算法
        //        int duplicate = getDuplicate(array01, 8);
        //        int duplicate = getDuplicate(array05, array05.length);

        // 2 时间优先算法
        //        int duplicate = getDuplicate02(array01, 8);
        int duplicate = DuplicationInArrayNoEdit.getDuplicate02(array05, array05.length);

        // 三 输出
        switch(duplicate){
            case -1:
                System.out.println("数组为空或长度为0");
                break;
            case -2:
                System.out.println("数组中包含不在1~n范围内的数字");
                break;
            default:
                System.out.println("数组中的一个重复数字为 " + duplicate);
        }  // end switch
    }  // end main()
}  // end class
